import { create } from 'mobx-persist';
import AuthStore from './AuthStore';
import LoaderStore from './LoaderStore';
import AlertStore from './AlertStore';
import DialogStore from './DialogStore';
import UserStore from './UserStore';
import PermissionStore from './PermissionStore';

const hydrate = create({});

class RootStore {
    auth: AuthStore;
    user: UserStore;
    permission: PermissionStore;
    // misc
    loader: LoaderStore;
    alert: AlertStore;
    dialog: DialogStore;

    constructor() {
        this.auth = new AuthStore();
        hydrate('auth', this.auth);
        this.user = new UserStore();
        this.permission = new PermissionStore();

        this.loader = new LoaderStore();
        this.alert = new AlertStore();
        this.dialog = new DialogStore();
    }
}

const store = new RootStore();
export default store;
